using net_work.Common.Request;
using net_work.Common.Result;
using net_work.Data.DTO.Cou;
using net_work.Data.Entity.Cou;
using net_work.Data.VO.Cou;

namespace net_work.IService.Cou;

public interface ITeachingService
{
    /// <summary>
    /// 分页查询教学
    /// </summary>
    /// <param name="request">查询参数</param>
    /// <returns>分页结果</returns>
    Task<PagedResult<TeachingResult>> GetTeachingsPagedAsync(PagedRequest request);

    /// <summary>
    /// 根据教学ID查询教学信息
    /// </summary>
    /// <param name="teachingId">教学ID</param>
    /// <returns>教学信息</returns>
    Task<Teaching?> SelectByIdAsync(long teachingId);

    /// <summary>
    /// 插入教学
    /// </summary>
    /// <param name="teachingAddRequest">新增教学实体</param>
    /// <returns>新增的教学ID</returns>
    Task<long> InsertTeaching(TeachingAddRequest teachingAddRequest);

    /// <summary>
    /// 更新教学信息
    /// </summary>
    /// <param name="teachingUpdateRequest">更新教学信息</param>
    /// <returns>是否成功</returns>
    Task<int> UpdateTeaching(TeachingUpdateRequest teachingUpdateRequest);

    /// <summary>
    /// 删除教学
    /// </summary>
    /// <param name="ids">教学ID集合</param>
    /// <returns>是否成功</returns>
    Task<int> DeleteTeachingByIds(List<long> ids);

    /// <summary>
    /// 发布教学
    /// </summary>
    /// <param name="teachingId">教学ID</param>
    /// <returns>是否成功</returns>
    Task<int> Release(long teachingId);

    /// <summary>
    /// 导出教学
    /// </summary>
    /// <returns>导出结果</returns>
    Task<byte[]> ExportTeaching();
}